package com.JavaBasic;

import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class MapDemo {
	public static void main(String[] args) {
		// 创建HashSet
		// 向map集合中添加键值对
		HashMap<String, String> hsMap1 = new HashMap<>();
		hsMap1.put("张三", "北京");
		hsMap1.put("李四", "上海");
		hsMap1.put("王五","深圳");
		hsMap1.put("张三", "广州");
		System.out.println("hsMap1=" + hsMap1);
		
		// 获取集合元素个数
		int num = hsMap1.size();
		System.out.println("hsMap1中元素个数为:" + num);
		
		// 判断Map是否包含指定的键
		boolean contains = hsMap1.containsKey("张三");
		System.out.println("hsMap1是否包含张三键:" + (contains ? "是" : "否"));
		
		// 判断map是否包含指定的值
		boolean c = hsMap1.containsValue("北京");
		System.out.println("hsMap1是否包含北京这个值:" + (c ? "是" : "否"));
		
		// 通过键获取值
		String vString = hsMap1.get("张三");
		System.out.println("hsMap1中张三对应的值是:" + vString);
		
		// 获取集合中所有的键
		Set<String> set = hsMap1.keySet();
		System.out.println("hsMap1中所有的键是:" + set);
		
		// 获取集合中的所有值
		Collection<String> cl = hsMap1.values();
		System.out.println("hsMap1中所有的值为:" + cl);
		
		// Map迭代
		Set<Map.Entry<String, String>> set2 = hsMap1.entrySet();
		Iterator<Map.Entry<String, String>> iterator = set2.iterator();
		System.out.println("遍历hsMap1：");
		while(iterator.hasNext()) {
			Map.Entry<String, String> element = iterator.next();
			System.out.print(element.getKey());
			System.out.print(" = ");
			System.out.println(element.getValue());
		}
		
		// 根据键删除元素
		hsMap1.remove("张三");
		System.out.println("删除张三以后hsMap1=" + hsMap1);
		
		// 指定键值删除
		hsMap1.remove("张三", "北京");
		System.out.println("删除张三北京以后hsMap1=" + hsMap1);
		
		// 清空Map
		hsMap1.clear();
		System.out.println("清空后hsMap1=" + hsMap1);
		
		// 判断集合是否为空
		boolean empty = hsMap1.isEmpty();
		System.out.println("hsMap1是否为空:" + (empty ? "是" : "否"));
	}
}
